home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / tex / td187src.lzh / MTDIALS.I < prev    next >
Text File  |  1991-06-08  |  41KB  |  1,285 lines

  1. (*######################################################################
  2.                            M A G I C D I A L S
  3.   ######################################################################
  4.  
  5.   Das Modul benutzt keine UserDef-Objekte, weil es damit nicht ohne 
  6.   größere Anpassungsarbeiten zwischen den Compilern transferiert
  7.   werden kann.  In dieser Version ist das Modul mit MM2, TDI und HM2
  8.   OHNE ÄNDERUNG laufähig.  Ggf. können die Compilerswitches angepasst
  9.   werden.
  10.  
  11.   ######################################################################
  12.   V2.03   15.12.90        Jens Pirnay  (Minimaländerung, daß bei RBUTTON
  13.                           auch bei Status Exit ein Kreis gezeichnet wird)
  14.   V2.02   29.11.90        Peter Hellinger
  15.   V2.01    8.11.90        Peter Hellinger
  16.   V2.00    1.11.90        Peter Hellinger
  17.   V1.01   31.10.90        Peter Hellinger
  18.   V1.00   28.10.90        Peter Hellinger
  19.   V0.98   21.10.90        Peter Hellinger
  20.   V0.97   18.08.90        Peter Hellinger
  21.   ######################################################################*)
  22.  
  23. IMPLEMENTATION MODULE mtDials;
  24.  
  25. (*------------------------------*)
  26. (*       COMPILERSWITCHES       *)
  27. (*------------------------------*)
  28. (*  TDI-Version:   DEAKTIVIERT  *)
  29. (*------------------------------*)
  30. (* V-  Overflow-Checks          *)
  31. (* R-  Range-Checks             *)
  32. (* S-  Stack-Check              *)
  33. (* N-  NIL-Checks               *)
  34. (* T-  TDI-Compiler vor 3.01    *)
  35. (* Q+  Branch statt Jumps       *)
  36. (*                              *)
  37. (*------------------------------*)
  38. (*  MM2-Version:     AKTIVIERT  *)
  39. (*------------------------------*)
  40. (*$R-   Range-Checks            *)
  41. (*$S-   Stack-Check             *)
  42. (*                              *)
  43. (*------------------------------*)
  44.  
  45.  
  46. FROM SYSTEM     IMPORT  ADDRESS, ADR;
  47. FROM Storage    IMPORT  ALLOCATE, DEALLOCATE;
  48. FROM MagicSys   IMPORT  Nil, Null,
  49.                         Bit0, Bit1, Bit2, Bit3, Bit4, Bit5, Bit6, Bit7,
  50.                         Bit8, Bit9, Bit10, Bit11, Bit12, Bit13, Bit14, Bit15,
  51.                         LOC, Byte, ByteSet, sWORD, sINTEGER, sCARDINAL, sBITSET,
  52.                         lWORD, lINTEGER, lCARDINAL, lBITSET,
  53.                         CastToChar, CastToByte, CastToByteset, CastToInt,
  54.                         CastToCard, CastToBitset, CastToWord, CastToLInt,
  55.                         CastToLCard, CastToLBitset, CastToLWord, CastToAddr;
  56. FROM MagicBIOS  IMPORT  KRSHIFT, KLSHIFT, KCTRL, KALT, KCAPS;
  57. FROM MagicVDI   IMPORT  VDIIntIn, VDIIntOut, VDIPtsIn, VDIPtsOut, VDIControl,
  58.                         VDICall, tWorkIn, tWorkOut, MFDB, ShowCursor,
  59.                         HideCursor, SetFillcolor, SetWritemode, Fat, Light,
  60.                         Italic, Underline, Outline, Shadowed, SetTexteffect,
  61.                         SetTextalignment, XOR, REPLACE, Text,
  62.                         SetFillperimeter;
  63. FROM MagicAES   IMPORT  GBOX, GTEXT, GBOXTEXT, GIMAGE, GPROGDEF, GIBOX,
  64.                         GBUTTON, GBOXCHAR, GSTRING, GFTEXT, GFBOXTEXT,
  65.                         GICON, GTITLE, SELECTABLE, DEFAULT, Exit, EDITABLE,
  66.                         RBUTTON, LASTOB, TOUCHEXIT, HIDETREE, INDIRECT,
  67.                         SELECTED, CROSSED, CHECKED, DISABLED, OUTLINED,
  68.                         SHADOWED, DRAW3D, WHITEBAK, OBJECT, ObjcAdd, RTREE,
  69.                         RsrcGaddr, EDINIT, EDCHAR, EDEND, ObjcEdit, ObjcDraw,
  70.                         ObjcFind, BEGMCTRL, ENDMCTRL, WindUpdate, WFFULLXYWH,
  71.                         WindGet, FMDGROW, FMDSHRINK, FormDial, FormCenter, 
  72.                         FormKeybd, FormButton, GrafMkstate, ARROW, FLATHAND,
  73.                         GrafMouse, GrafDragbox, GrafHandle, MUKEYBD, MUBUTTON,
  74.                         MUM1, MUM2, MUMESAG, MUTIMER, AESIntIn, AESIntOut,
  75.                         AESCall, ObjcOffset;
  76. FROM mtAppl     IMPORT  OpenWorkstation, Bitplanes, 
  77.                         MouseOn, MouseOff, MouseHand, MouseArrow;
  78. FROM mtArea     IMPORT  AREA, NewAREA, DisposeAREA, FreeArea, SaveArea, 
  79.                         CopyArea, RestoreArea, MOVEUP, MOVEDOWN, MOVELEFT,
  80.                         MOVERIGHT, MoveArea;
  81. FROM MagicStrings  IMPORT  Assign, Length, Cap;
  82. IMPORT  MagicAES;
  83. IMPORT  MagicVDI;
  84. IMPORT  MagicXBIOS;
  85.  
  86.  
  87. CONST   ShortCut =      '[';   (* Zeichen das dem Shortcut vorausgeht *)
  88.         ShortKey =      KALT;  (* Taste für Shortcut-Kennung (ALTERNATE) *)
  89.         toScreen =      TRUE;
  90.         toRAM =         FALSE;
  91.         MaxLegals =     40;
  92.  
  93.  
  94. TYPE    tRect =         RECORD
  95.                          x, y, w, h: sINTEGER;
  96.                         END;
  97.                         (* Rechtecke bestehen PRINZIPIELL aus Koordinate
  98.                          * (x, y), Breite (w) und Höhe (h)!!!
  99.                          *)
  100.  
  101. TYPE    MonoKnopf =     ARRAY [0..15] OF sCARDINAL;
  102.         FarbKnopf =     ARRAY [0..7]  OF sCARDINAL;
  103.         AlertImage =    ARRAY [0..31] OF lCARDINAL;
  104.  
  105. TYPE    Trick =         POINTER TO RECORD
  106.                          CASE : BOOLEAN OF
  107.                           TRUE:  wert: sINTEGER;|
  108.                           FALSE: hi: CHAR;
  109.                                  lo: CHAR;|
  110.                          END;
  111.                         END;
  112.  
  113. TYPE    ObjcTree =      POINTER TO ARRAY [0..MAX(INTEGER)] OF OBJECT;
  114.  
  115. TYPE    DIALOG =        POINTER TO Dialog;
  116.         Dialog =        RECORD
  117.                          tree:  ObjcTree;
  118.                          back:  AREA;
  119.                          move:  BOOLEAN;
  120.                         END;
  121.  
  122.  
  123. VAR     Handle:         sINTEGER;  (* VDI-Workstation *)
  124.         Breite:         sINTEGER;  (* Breite des Bildschirms *)
  125.         Hoehe:          sINTEGER;  (* Höhe des Bildschirms *)
  126.         ChWidth:        sINTEGER;  (* Breite eines Zeichens *)
  127.         ChHeight:       sINTEGER;  (* Höhe eines Zeichens *)
  128.         BoxWidth:       sINTEGER;  (* Breite der Zeichenbox *)
  129.         BoxHeight:      sINTEGER;  (* Höhe der Zeichenbox *)
  130.         ROffset:        sINTEGER;  (* Offset für Radio- und Checkbuttons *)
  131.         Initial:        BOOLEAN;   (* TRUE wenn InitMagicDials erfolgreich *)
  132.         Config:         sBITSET;   (* Globales Config-Flagset *)        
  133.  
  134. VAR     Tastatur:       MagicXBIOS.PtrKEYTAB;  (* Zeiger auf Tastaturtabelle *)
  135.  
  136. VAR     legals:         ARRAY [0..MaxLegals] OF CHAR;
  137.                         (* Legale Zeichen für Shortcuts *)
  138.  
  139. VAR     ScreenMFDB:     MFDB;           (* MFDB für Bildschirm    *)
  140.         area:           AREA;
  141.  
  142.  
  143. VAR     control7:       POINTER TO ADDRESS; (* it's tricky... *)
  144.         control9:       POINTER TO ADDRESS;
  145.         t:              Trick;
  146.         t2:             Trick;
  147.  
  148.  
  149. VAR     screen:         tRect;  (* Ausmaße des gesamten Schirms *)
  150.         small:          tRect;  (* Default-Rechteck mit Größe Null *)
  151.         clip:           tRect;  (* Clipping-Rechteck *)
  152.  
  153. VAR     mKnopfEin:      MonoKnopf;      (* Images für Knöpfe *)
  154.         mKnopfAus:      MonoKnopf;
  155.         mSelectEin:     MonoKnopf;
  156.         mSelectAus:     MonoKnopf;
  157.         fKnopfEin:      FarbKnopf;
  158.         fKnopfAus:      FarbKnopf;
  159.         fSelectEin:     FarbKnopf;
  160.         fSelectAus:     FarbKnopf;
  161.  
  162.  
  163. (*----------------------------------------------------------------------*)
  164.  
  165. PROCEDURE GetKeytable (): MagicXBIOS.PtrKEYTAB;
  166. VAR tb: ADDRESS;
  167. BEGIN
  168.  tb:= Nil;
  169.  RETURN MagicXBIOS.Keytbl (tb, tb, tb);
  170. END GetKeytable;
  171.  
  172.  
  173.  
  174. (*----------------------------------------------------------------------*)
  175.  
  176. PROCEDURE DialConfig (flag: sINTEGER; set: BOOLEAN);
  177. BEGIN
  178.  CASE flag OF
  179.   UseUndo: IF set THEN  INCL (Config, UseUndo);
  180.                   ELSE  EXCL (Config, UseUndo);
  181.            END;
  182.            |
  183.   ELSE     ;
  184.  END;
  185. END DialConfig;
  186.  
  187.  
  188. PROCEDURE NewDial (tree: ADDRESS; VAR dial: DIALOG): BOOLEAN;
  189. BEGIN
  190.  NEW (dial);
  191.  IF dial = NIL THEN  RETURN FALSE;  END;
  192.  IF NOT NewAREA (dial^.back) THEN
  193.   DISPOSE (dial);  RETURN FALSE;
  194.  END;
  195.  dial^.tree:= tree;
  196.  RETURN TRUE;
  197. END NewDial;
  198.  
  199.  
  200. PROCEDURE DisposeDial (VAR dial: DIALOG);
  201. BEGIN
  202.  IF dial # NIL THEN
  203.   DisposeAREA (dial^.back);
  204.   DI